// /**
//  * @param {number[]} nums
//  * @return {number[][]}
//  */
// var permute = function (nums) {
//   if (nums.length <= 1) {
//     // 无需递归，只有一种情况
//     return [nums]
//   }
//   let res = []
//   for (let i = 0; i < nums.length; i++) {
//     // 固定一个数，让剩下的数字去安排，将得到的结果进行拼接
//     let cur = nums[i]
//     // 去掉当前数字
//     let tmpArr = nums.slice(0, i).concat(nums.slice(i + 1))
//     // 去排后得到的个数？
//     let arr = permute(tmpArr)
//     for (let j = 0; j < arr.length; j++) {
//       arr[j].unshift(cur)
//       res.push(arr[j])
//     }
//   }

//   return res
// };


console.log(permute([1, 2, 3]))



// redo

function permute(nums) {
  if (nums.length <= 1) {
    return [nums]
  }
  let res = []
  for (let i = 0; i < nums.length; i++) {
    let tmpArr = nums.slice(0, i).concat(nums.slice(i + 1))
    tmpArr = permute(tmpArr)
    for (let j = 0; j < tmpArr.length; j++) {
      tmpArr[j].unshift(nums[i])
      res.push(tmpArr[j])
    }
  }
  return res
}